package br.com.controler;

import br.com.modelo.Cliente;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import util.JPAUtil;

/**
 *
 * @author Gilberto
 */
public class ClienteControler {

    public static List<Cliente> retornaClientes() {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Cliente");
        List<Cliente> list = q.getResultList();
        em.close();
        return list;
    }

    public static Cliente retornaClientePorId(Integer idCliente) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Cliente f WHERE f.id = ?");
        q.setParameter(1, idCliente);
        Cliente retorno;
        try {
            retorno = (Cliente) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }

    public static List<Cliente> retornaClientePesquisa(String str) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Cliente c"
                + " WHERE c.nome like ?"
                + " OR c.fantasia like ?"
                + " OR c.cpfCnpj like ?"
                + " OR c.rg like ?");
        q.setParameter(1, "%" + str + "%");
        q.setParameter(2, "%" + str + "%");
        q.setParameter(3, "%" + str + "%");
        q.setParameter(4, "%" + str + "%");
        List<Cliente> list = q.getResultList();
        em.close();
        return list;
    }

    public static Cliente retornaClientePorCpfCnpj(String text) {
        EntityManager em = JPAUtil.retornarFabrica().createEntityManager();
        Query q = em.createQuery("FROM Cliente f WHERE f.cpfCnpj = ?");
        q.setParameter(1, text);
        Cliente retorno;
        try {
            retorno = (Cliente) q.getSingleResult();
            em.close();
            return retorno;
        } catch (javax.persistence.NoResultException e) {
            em.close();
            return null;
        }
    }
}
